YAHOO.namespace('Osimac.atencion');

YAHOO.Osimac.atencion.materialesTable = function(elContainer, messages, listado) {
    this.messages = messages;
    this.listado = listado;
    YAHOO.Osimac.atencion.materialesTable.superclass.constructor.call(this, elContainer,
    this.construirColumnDefs(), this.construirDataSource(), this.construirConfig());
};

YAHOO.lang.extend(YAHOO.Osimac.atencion.materialesTable, YAHOO.Osimac.ListTableBase, {
    accionesFormatter: function(liner, record, column, data) {
        var self = this;
        var linerElement = new YAHOO.util.Element(liner);

        linerElement.get('element').innerHTML = 
        "<table style='margin-left:auto; margin-right:auto; width: 50px; border:0px !important;'><tr><td><div class='eliminar'></div></td></tr></table>";
    
        linerElement.delegate('click', function() {
             self.deleteRow(self.getRecordSet().getRecordIndex(record));
        }, '.eliminar');
        self.setAccionTooltip(linerElement,  '.eliminar', messages.comun.eliminar, 5000);
        
    },
    nulosFormatter: function(liner, record, column, data) {
        if (!data) {
            liner.innerHTML = '---';
        } else {
            liner.innerHTML = data;
        }
    },
    doBeforeLoadData: function(oRequest, oResponse, oPayload) {
        oPayload.totalRecords = oResponse.meta.totalRecords;
        //oPayload.pagination.recordOffset = oResponse.meta.startIndex;
        return oPayload;
    },
    construirColumnDefs: function() {
        return [
            {
                key: 'idMaterial',
                hidden: true
            },
            {
                key:'titulo',
                minWidth: 400,
                label:this.messages.materialesTable.columna.titulo
            },
            {
                key: 'strTipoMaterial',
                label:this.messages.materialesTable.columna.tipo
            },
            {
                key: 'acciones',
                minWidth: 70,
                className: 'accionesColumn',
                formatter: this.accionesFormatter,
                label: this.messages.comun.eliminar
                
            }
        ];
    },
    construirDataSource: function() {

        var dataSource = new YAHOO.util.LocalDataSource({
            results: this.listado
        });

        dataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;

        dataSource.responseSchema = {
            resultsList: "results",
            metaFields: {
                totalRecords: "totalRecords",
                startIndex: "startIndex"
            },
            fields: [ {key: 'idMaterial'}, {key: 'titulo'},{key:'idTipoMaterial'},{key:'strTipoMaterial'}]
        };

        
        return dataSource;
    },
    construirConfig: function() {

        return {
            MSG_LOADING: 'Cargando...',
            MSG_EMPTY :'No se encontraron datos.',
            MSG_ERROR: "Error cargando datos, es muy probable que la sesión haya expirado.. <a href='" + Osinergmin.contextPath + "/pages/public/login'>Haga clic aquí para volver a acceder al sistema.</a>",
            generateRequest: this.generarRequest,
            initialRequest: this.generarRequest(),
            dynamicData: true
            /*paginator : new YAHOO.widget.Paginator({
                rowsPerPage: this.messages.materialesTable.paginacion.filasxpagina,
                containers:  "gruposPaginator", //contenedor
                firstPageLinkLabel: this.messages.materialesTable.paginacion.inicio,
                lastPageLinkLabel: this.messages.materialesTable.paginacion.fin,
                previousPageLinkLabel: this.messages.materialesTable.paginacion.anterior,
                nextPageLinkLabel: this.messages.materialesTable.paginacion.siguiente,
                pageLinkClass: 'pageLinkClass',
                template: "{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
            })*/
        }
    },
    generarRequest: function(oState, oSelf) {
      oState = oState || {
            pagination: null,
            sortedBy: null
        };
        var sort = (oState.sortedBy) ? oState.sortedBy.key : "titulo";
        var dir = (oState.sortedBy && oState.sortedBy.dir === YAHOO.widget.DataTable.CLASS_DESC) ? "desc" : "asc";
        //var startIndex = (oState.pagination) ? oState.pagination.recordOffset : 0;
        //var results = (oState.pagination) ? oState.pagination.rowsPerPage : 10;
        var idAtencion =$('#idAtencion').val();
        
        return 'sort=' + sort +
               '&dir=' + dir +
          //     '&startIndex=' + startIndex +
            //   '&results=' + (startIndex + results) +
               '&idAtencion=' + idAtencion;
    },
    recargarData: function() {
        var self = this;
            oCallback = {
                success: self.onDataReturnInitializeTable,
                failure: self.onDataReturnSetRows,
                scope: self,
                argument: self.getState()
            };
        self.getDataSource().sendRequest(self.generarRequest(), oCallback);   
        
    },
    agregarFila : function(fila){
        this.addRow(fila);
    },
    getSeleccionados:function(){
        var self = this;
        var strSeleccionados="0,";
        for(var i=0;i<self.getRecordSet().getLength();i++){
            strSeleccionados=strSeleccionados+self.getRecordSet().getRecord(i).getData().idMaterial+",";
        }
        return strSeleccionados;
    }
});